procedure yy(bitNum: Integer);
var
  i0,i1: Integer;
begin
  for i0 := 0 to bitNum - 1 do
  begin
    data2[0] := data[i0];
    if BoExit then Exit;

    if bitNum=1 then begin zz(bitNum); continue; end;

    for i1 := 0 to bitNum - 1 do
    begin
      if False or (data[i1]=data2[0]) then begin continue; end;
      data2[1] := data[i1];
      if BoExit then Exit;

      if bitNum=2 then begin zz(bitNum); continue; end;

    end;
  end;
end;
procedure xx(bitNum: Integer);
var
  i0,i1: Integer;
begin
  for i0 := FStart1 to FEnd1 do
  begin
    data[0] := i0;
    if BoExit then Exit;

    if bitNum=1 then begin yy(bitNum); continue; end;

    for i1 := i0 + 1 to iCharsetLen - 1 do
    begin
      data[1] := i1;
      if BoExit then Exit;

      if bitNum=2 then begin yy(bitNum); continue; end;

    end;
  end;
end;
